#ifndef __MARS_CORE_ENGINE_H__
#define __MARS_CORE_ENGINE_H__

#include "MarsObject.h"

namespace Core
{

class Engine : public Object
{
public:
									~Engine();

	bool							Initialize( HINSTANCE hInstance, HWND hwnd );
	void							Shutdown();

	static Engine&					Instance();
	static void						Destroy();

private:
									Engine();
									Engine( const Engine& );
	Engine&							operator = ( const Engine& );

	static Engine*					ms_pEngine;

};

inline Engine& Engine::Instance()
{
	if ( !ms_pEngine )
	{
		ms_pEngine = new Engine();
	}

	return ( *ms_pEngine );
}

} // end of namespace Core

#endif // end if #ifndef __MARS_CORE_ENGINE_H__